package com.filldream.fastboot.common.annotation;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.filldream.fastboot.common.annotation.config.TmSerialize;
import com.filldream.fastboot.common.constant.enums.TmTypeEnum;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 脱敏注解
 * @author RickSun
 * @date 2023-11-09
 * @see com.filldream.fastboot.common.constant.enums.TmTypeEnum
 *
 * 使用示例:
 * @TmAnn(TmTypeEnum.PHONE)
 * @ApiModelProperty(value = "手机号")
 * private String phone;
 *
 * 可动态添加规则，请移步到TmTypeEnum类中添加
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@JacksonAnnotationsInside
@JsonSerialize(using = TmSerialize.class)
public @interface TmAnn {

    /** 脱敏类型 **/
    TmTypeEnum value() default TmTypeEnum.NONE;

    /** 左侧不脱敏长度 **/
    int pre() default 0;

    /** 右侧不脱敏长度 **/
    int suffix() default 0;

    /** 脱敏替换符 **/
    String  symbol() default "*";

}
